package com.finalcial.service;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.finalcial.po.OtherInformation;
/**
 * 对应申请业务
 * @author Administrator
 *
 */
public interface ApplicationService {
	
	/**
	 * 显示申请界面接收者角色下拉框
	 * @return
	 */
	public List<Map<String, Object>> showRoleNameList();
	
	/**
	 * 显示进入申请界面的申请人的基本信息
	 * @return 报账人、报账单位名称(部门名)、报账人电话、公司代码(公司id)
	 */
	public List<Map<String,Object>> showBasicList(Integer userId);
	/**
	 * 显示进入申请界面的申请人的基本信息
	 * @param reimbursementTypeId 报销类型id
	 * @return 预算指标
	 */
	public String ShowBudgetIndicator(Integer reimbursementTypeId);
	/**
	 * 申请界面基本信息查询
	 * @return 票据类型名称
	 */
	public  List<Map<String,Object>> showInvoiceTypeName();
	/**
	 * 申请界面显示收款人信息
	 * @param userId
	 * @return  收款人，所属部门，员工编号，收款类型，公司名称，开户行，银行账号 
	 */
	public OtherInformation showInsiderInfoOther(Integer userId);
	/**
	 * 申请报账中接收人下拉框接口(非管理员)
	 * @param roleId 
	 * @return
	 */
	public List<Map<String, Object>> listUserNameAll(Integer roleId);

	/**
	 * 申请差旅明细--查询记账成本中心
	 * @param userId 用户Id(接收人Id)
	 * @return 部门名称
	 */
	public String getUserDepartmentName(Integer userId);
	/**
	 * 员工福利申请界面新增所需的信息
	 * @param userId
	 * @param accepter
	 * @param invoiceTypeId
	 * @param reimbursementId
	 * @param reimbursementTime
	 * @param reimbursementExplain
	 * @param payments
	 * @param invoiceTime
	 * @param isAdvance
	 * @param reimbursementNumber
	 * @param isCostCapitalBudget
	 * @param reimbursementMoney
	 * @param reimbursementMoneyOfTax
	 * @return
	 */
	public Integer insertStaffApplicationMsg(Integer userId, Integer accepter, Integer invoiceTypeId, String reimbursementId, Date reimbursementTime, String reimbursementExplain, String payments, Date invoiceTime, String isAdvance, Integer reimbursementNumber, String isCostCapitalBudget, Integer reimbursementMoney, Integer reimbursementMoneyOfTax);

	/**
	 * 国内差旅申请界面新增所需的信息
	 * @param userId
	 * @param payments
	 * @param reimbursementId
	 * @param reimbursementTime
	 * @param reimbursementExplain
	 * @param reimbursementNumber
	 * @param reimbursementMoney
	 * @param reimbursementMoneyOfTax
	 * @param accepterId
	 * @return
	 */
	public Integer insertTravelApplicationMsg(Integer userId,String payments, String reimbursementId, Date reimbursementTime, String reimbursementExplain, Integer reimbursementNumber, Integer reimbursementMoney, Integer reimbursementMoneyOfTax,Integer accepterId);
	
	/**
	 * 物业管理申请界面新增所需的信息
	 * @param userId
	 * @param accepter
	 * @param invoiceTypeId
	 * @param reimbursementId
	 * @param reimbursementTime
	 * @param reimbursementExplain
	 * @param payments
	 * @param invoiceTime
	 * @param isAdvance
	 * @param reimbursementNumber
	 * @param isCostCapitalBudget
	 * @param reimbursementMoney
	 * @param reimbursementMoneyOfTax
	 * @param isSingle
	 * @return
	 */
	public Integer insertManagerApplicationMsg(Integer userId, Integer  accepter, Integer invoiceTypeId, String reimbursementId, Date reimbursementTime,  String reimbursementExplain, String payments, Date invoiceTime, String isAdvance,  Integer reimbursementNumber, String isCostCapitalBudget, Integer  reimbursementMoney, Integer reimbursementMoneyOfTax, String isSingle);


	/**
	 * 公务交通申请界面新增所需的信息
	 * @param userId
	 * @param accepter
	 * @param invoiceTypeId
	 * @param reimbursementId
	 * @param reimbursementTime
	 * @param reimbursementExplain
	 * @param payments
	 * @param invoiceTime
	 * @param isAdvance
	 * @param reimbursementNumber
	 * @param isCostCapitalBudget
	 * @param reimbursementMoney
	 * @param reimbursementMoneyOfTax
	 * @param isSingle
	 * @return
	 */
	public Integer insertOffcialApplicationMsg(Integer userId, Integer  accepter, Integer invoiceTypeId, String reimbursementId, Date reimbursementTime,  String reimbursementExplain, String payments, Date invoiceTime, String isAdvance,  Integer reimbursementNumber, String isCostCapitalBudget, Integer  reimbursementMoney, Integer reimbursementMoneyOfTax, String isSingle);
	
	/**
	 * 国内差旅申请界面根据用户ID查询报销金额上限
	 * @param userId
	 * @return
	 */
	public List<Map<String, Object>> getFoodSalary(Integer userId);
	/**
	 * 上传文件保存数据库
	 * @param invoiceName 票据名字
	 * @param invoiceTime 票据时间
	 * @param reimbursementId 报销ID
	 * @param invoiceTypeId 票据类型ID
	 * @param enclosureUrl 文件路径
	 * @param enclosureSize 文件大小
	 * @return
	 */
	public Integer insertUploadAndMsg(String invoiceName, String invoiceTime, String reimbursementId, Integer invoiceTypeId, String enclosureUrl, String enclosureSize);
	/**
	 * 国内差旅申请界面差旅明细--新增所需的信息
	 * @param userId
	 * @param reimbursementId
	 * @param businessTravelStartDate
	 * @param businessTravelEndDate
	 * @param businessTravelStartSection
	 * @param businessTravelEndSection
	 * @param vehicleName
	 * @param foodCost
	 * @param cityTrafficExpense
	 * @param provinceTrafficExpense
	 * @param hotelExpense
	 * @param inputTax
	 * @param otherCost
	 * @return
	 */
	public Integer insertTravelDetailsApplication(Integer userId,String reimbursementId,Date businessTravelStartDate,Date businessTravelEndDate,String businessTravelStartSection,String businessTravelEndSection,String vehicleName,Integer foodCost,Integer cityTrafficExpense,Integer provinceTrafficExpense,Integer hotelExpense,Integer inputTax,Integer otherCost);
	/**
	 * 申请报账中图片解析接口
	 * @param reimbursementId 报销id
	 * @return
	 */
	public List<Map<String, Object>> getCheckSheet(String reimbursementId);
}
